# -*- coding: utf-8 -*-
#! /usr/bin/python

# To change this template, choose Tools | Templates
# and open the template in the editor.

import sys
from PyQt4 import QtCore, QtGui
from gui_bio import gui_bio
import math
#from spin_box import spin_box
__author__="andrey"
__date__ ="$29.04.2010 13:33:29$"

class StartQt(QtGui.QMainWindow):
    def __init__(self, parent=None):
        """Функция инициализации интерфейса и различных коэффициентов и ресурсов"""
        QtGui.QWidget.__init__(self, parent)
        self.ui = gui_bio()
        self.ui.setupUi(self)
#        self.ui.spinbox_load()

#       Номер хода

        self.iteration = 0
#       Словарь с ресурсами  scientist - ученые, priest - клерикалы, unhuman - нелюди, religion - уровень религиозности, smeh - смехуёчки, humanist - гуманитарии
        self.ressource = dict(bydlo = 20, govno = 0, metan = 250, matan = 50, scientist = 5, priest = 0, robot = 0, unhuman = 0, religion = 0, smeh = 25, humanist = 0)
#        system variables
#        var u1=false;
#        var u2=false;
#        var u3=false;
#        var u4=false;
#        var u5=false;

#       Словарь с уровнями развития
        self.level = dict(unhuman = 1, robot = 0, science = 1, rosatiy = 1, bioreactor = 0)

#       bydlo & govno variablrs
        self.gov_to_met = 25
        self.g_t_m_koeff = 5
        self.bb_koeff = 4
        self.bm_koeff = 5

#       science variables
        self.matan_koeff=1
        self.matan_metan_koeff=2
        self.matan_scientist_koeff=10

#       unhuman varables
        self.smeh_koeff=1
        self.matan_unhuman_koeff=25
        self.metan_unhuman_koeff=10

        self.unhuman_koeff_p=0.1
        self.unhuman_priest_kill=2

#       robot variables
        self.robot_priest_kill=2
        self.metan_robot_koeff=25
        self.bydlo_metan_koeff=2

#        humanist variables
        self.humanist_eat_shit=4
        self.humanist_eat_matan=1
        self.humanist_eat_smeh=1

        QtCore.QObject.connect(self.ui.go, QtCore.SIGNAL("clicked()"),self.go)
#        QtCore.QObject.connect(self.ui.)
#   Событие происходящие при нажатии на кнопку "сделать ход"
    def go(self):

#        Прирост говна
        tmp = self.ressource['bydlo'] * 1.5
        if tmp > 0:
            self.ressource['govno'] = self.ressource['govno'] + tmp
            news = "Гражданами Империи было произведено "+ str(tmp) + " говна"

#       Производство метана
        if self.ressource['govno'] > (self.gov_to_met * (self.level['bioreactor']+1)):
            tmp = math.ceil(self.gov_to_met*(self.level['bioreactor']+1)/self.g_t_m_koeff)
            if tmp > 0:
                news = news + "\n"+ str(math.ceil(self.gov_to_met*(self.level['bioreactor']+1)))+ " говна было использовано в производстве."
                news = news + "При этом выработано "+ str(math.ceil(self.gov_to_met*(self.level['bioreactor']+1)/self.g_t_m_koeff))+ " метана"
                self.ressource['metan']= self.safe_plus(self.ressource['metan'], tmp)
                self.ressource['govno']= self.safe_plus(self.ressource['govno'], - (self.gov_to_met*(self.level['bioreactor']+1)))
        else:
            tmp = math.ceil(self.ressource['govno']/self.g_t_m_koeff)
            if tmp>0:
                news = news + "\n Все имеющееся в наличии говно было использовано в производстве..."
                news = news + "При этом выработано"+ str(tmp)+ " метана"
                self.ressource['metan']=self.safe_plus(self.ressource['metan'], tmp)
                self.ressource['govno']=0

#      Размножение быдла
        tmp = math.ceil(self.ressource['bydlo']/self.bb_koeff)
        if tmp > 0:
            news = news + "\nРодилось "+ str(tmp) + " граждан Империи."
            self.ressource['bydlo'] = self.safe_plus(self.ressource['bydlo'], tmp)
        if (self.ressource['metan'] < math.ceil(self.ressource['bydlo'] / self.bm_koeff)):
            tmp = (self.ressource['bydlo'] - math.ceil(self.ressource['metan'] * self.bm_koeff))
            if tmp > 0:
                news = news + "\n"+ str(tmp) + " граждан умерло из-за недостатка метана."
                self.ressource['bydlo'] = math.ceil(self.ressource['metan'] * self.bm_koeff)

#       Размножение клерикалов
        tmp = self.ressource['priest']
        self.ressource['priest'] = self.ressource['priest'] + math.ceil(self.ressource['priest']/10)
        if (math.ceil(self.ressource['govno'] / (self.ressource['matan'] + 1)) > 0):
            self.ressource['priest'] = self.safe_plus(self.ressource['priest'], math.ceil(self.ressource['govno'] / (self.ressource['matan'] + 1)))
        if (self.ressource['priest'] > self.ressource['bydlo']):
            self.ressource['priest'] = self.ressource['bydlo']
        if (tmp > self.ressource['priest']):
            news = news + "\nПоголовье клерикалов уменьшилось на "+ str(tmp - self.ressource['priest']) + " единиц."
        elif (tmp < self.ressource['priest']):
            news = news + "\nПоголовье клерикалов возросло на "+ str(self.ressource['priest']-tmp) + " единиц."

#       Размножение Гуманитариев
        tmp = math.ceil(self.ressource['scientist'] / 10)
        if tmp > 0:
            self.ressource['humanist'] = self.ressource['humanist'] + tmp
            news = news + "\nКоличество появившихся гуманитариев: "+ str(tmp)+ "."

        self.iteration = self.iteration + 1
        self.ui.hod_count.setText(unicode("Ход - " + str(self.iteration),'utf-8'))

#       Показ новостей
        self.ui.news.setText(unicode(news,'utf-8'))
        print 'ход - ' + str(self.iteration)
        print 'метан - ' + str(self.ressource['metan'])
        print 'быдло - ' + str(self.ressource['bydlo'])
        print 'говно - ' + str(self.ressource['govno'])
        print 'гуманитарии - ' + str(self.ressource['humanist'])
        print 'клерикалы - ' + str(self.ressource['priest'])
        self.ressource_load()

    def ressource_load(self):
# Добавление родившигося быдла
        self.ui.res_bidlo.setNum(self.ressource['bydlo'])
        self.ui.res_metan.setNum(self.ressource['metan'])
        self.ui.res_govno.setNum(self.ressource['govno'])
        self.ui.res_gumanitarii.setNum(self.ressource['humanist'])
        self.ui.res_klerikali.setNum(self.ressource['priest'])


    def safe_plus(self, x1, x2):
        x1 = x1 + x2
        if x1 > 0:
            return math.ceil(x1)
        else:
            return 0


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = StartQt()
    myapp.show()
    sys.exit(app.exec_())